3.1 Read data

# variables
url_ac <- "https://oceanview.pfeg.noaa.gov/erddap/tabledap/cciea_AC.csv"
csv_ac <- here("data/cciea_AC.csv")

# read data
d_ac        <- read_csv(url_ac, col_names = F, skip = 2)
## 
## ── Column specification ────────────────────────────────────────────────────────
## cols(
##   .default = col_double(),
##   X1 = col_datetime(format = "")
## )
## ℹ Use `spec()` for the full column specifications.
names(d_ac) <- names(read_csv(url_ac))
## 
## ── Column specification ────────────────────────────────────────────────────────
## cols(
##   .default = col_character()
## )
## ℹ Use `spec()` for the full column specifications.
# show data
datatable(d_ac)

3.2 Plot statically with ggplot2

3.2.1 Simple line plot + geom_line()

# subset data
d_coast <- d_ac %>% 
  # select columns
  select(time, total_fisheries_revenue_coastwide) %>% 
  # filter rows
  filter(!is.na(total_fisheries_revenue_coastwide))

datatable(d_coast)
# ggplot object
p_coast <- d_coast %>% 
  # setup aesthetics
  ggplot(aes(x = time, y = total_fisheries_revenue_coastwide)) +
  # add geometry
  geom_line()

# show plot
p_coast

3.2.4 Series line plot aes(color = region)

library(stringr)
library(tidyr)

d_rgn <- d_ac %>% 
  # select columns
  select(
    time, 
    starts_with("total_fisheries_revenue")) %>% 
  # exclude column
  select(-total_fisheries_revenue_coastwide) %>% 
  # pivot longer everything but the time column
  pivot_longer(-time) %>% 
  # mutate region by stripping other
  mutate(
    region = name %>% 
      str_replace("total_fisheries_revenue_", "") %>% 
      str_to_upper()) %>% 
  # filter for not NA
  filter(!is.na(value)) %>% 
  # select columns
  select(time, region, value)

datatable(d_rgn)
# create plot object
p_rgn <- ggplot(
  d_rgn,
  # aesthetics
  aes(
    x     = time, 
    y     = value,
    group = region,
    color = region)) +
  # geometry
  geom_line()

# show plot
p_rgn

3.2.5 Update labels + labs()

p_rgn <- p_rgn +
  labs(
    title  = "Fisheries Revenue",
    x      = "Year",
    y      = "Millions $ (year 2015)",
    color  = "Region")

p_rgn

p_rgn +
  facet_wrap(vars(region))

3.2.7 Bar plot + geom_col()

library(glue) ## handling strings
## Warning: package 'glue' was built under R version 3.6.2
## 
## Attaching package: 'glue'
## The following object is masked from 'package:dplyr':
## 
##     collapse
library(lubridate)
## Warning: package 'lubridate' was built under R version 3.6.2
## 
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
## 
##     date, intersect, setdiff, union
yr_max <- year(max(d_rgn$time))

d_rgn %>% 
  # filter by most recent time
  filter(year(time) == yr_max) %>% 
  # setup aesthetics
  ggplot(aes(x = region, y = value, fill = region)) +
  # add geometry
  geom_col() +
  # add labels
  labs(
    title  = glue("Fisheries Revenue for {yr_max}"),
    x      = "Region",
    y      = "Millions $ (year 2015)",
    fill   = "Region")

3.2.8 Variation of series with + geom_boxplot()

d_rgn %>% 
  # setup aesthetics
  ggplot(aes(x = region, y = value, fill = region)) +
  # add geometry
  geom_boxplot() +
  # add labels
  labs(
    title  = "Fisheries Revenue Variability",
    x      = "Region",
    y      = "Millions $ (year 2015)") +
  # drop legend since redundant with x axis
  theme(
    legend.position = "none")

violine plot

p_rgn_violin <- d_rgn %>% 
  # setup aesthetics
  ggplot(aes(x = region, y = value, fill = region)) +
  # add geometry
  geom_violin() +
  # add labels
  labs(
    title  = "Fisheries Revenue Variability",
    x      = "Region",
    y      = "Millions $ (year 2015)") +
  # drop legend since redundant with x axis
  theme(
    legend.position = "none")

p_rgn_violin +
  # Change theme and increase overall size
  theme_classic(base_size = 20)

3.3 Plot interactively with plotly or dygraphs

3.3.1 Make ggplot interactive with plotly::ggplotly()

plotly::ggplotly(p_rgn)